﻿using System.Linq;
using GDM.Hogar.Aplicacion.Formularios;
using GDM.Hogar.Entidades;
using GDM.Hogar.Entidades.Enums;
using GDM.Hogar.Managers.Contratos;
using GDM.Hogar.Soporte.Helpers;
using Microsoft.Reporting.WinForms;
using System;

namespace GDM.Hogar.Aplicacion.Reportes
{
    public partial class FrmPlanillaAsistenciaComedorVianda
    #if DEBUG
     : AdaptadorFrm
    #else
         : FrmBase
    #endif
    {
        private readonly IIntegranteManager _integranteManager;
        private readonly IActividadManager _actividadManager;

        public FrmPlanillaAsistenciaComedorVianda(IIntegranteManager integranteManager, IActividadManager actividadManager)
        {
            if (integranteManager == null)
                throw new ArgumentNullException("integranteManager");
            if (actividadManager == null)
                throw new ArgumentNullException("actividadManager");

            _integranteManager = integranteManager;
            _actividadManager = actividadManager;
            InitializeComponent();
        }

        public TipoActividad TipoActividad { get; set; }

        private void FrmPlanillaAsistenciaComedorVianda_Load(object sender, EventArgs e)
        {
            rpAsistenciaComedorVianda.Messages = new MensajesReportViewer();

            var integrantes = _integranteManager.AsistenAActividad((int)TipoActividad);
            //var integrantes = new List<IntegranteAsisteActividad>();
            //for (var i = 1; i < 60; i++)
            //{
            //    integrantes.Add(new IntegranteAsisteActividad());
            //}
            var horario = _actividadManager.ObtenerHorarios((int)TipoActividad).FirstOrDefault();
            var horarioCompleto = string.IsNullOrEmpty(horario.HoraComienzo) ? "" : string.Format("{0}-{1}", horario.HoraComienzo, horario.HoraFin);
            const int cantIntegrantesPorPagina = 20;
            var cantPaginas = integrantes.Count / cantIntegrantesPorPagina + 1;
            var totalACompletar = (cantPaginas * cantIntegrantesPorPagina) - integrantes.Count;
            for (var i = 0; i < totalACompletar; i++)
            {
                integrantes.Add(new IntegranteAsisteActividad());
            }

            rpAsistenciaComedorVianda.LocalReport.SetParameters(new ReportParameter("Actividad", TipoActividad.Descripcion()));
            rpAsistenciaComedorVianda.LocalReport.SetParameters(new ReportParameter("Hogar", ContextoHogar.Nombre));
            rpAsistenciaComedorVianda.LocalReport.SetParameters(new ReportParameter("Horario", horarioCompleto));
            rpAsistenciaComedorVianda.LocalReport.DataSources.Clear();
            rpAsistenciaComedorVianda.LocalReport.DataSources.Add(new ReportDataSource("DataSet_IntegranteAsisteActividad", integrantes));
            rpAsistenciaComedorVianda.RefreshReport();
        }
    }
}